/*************************************************************************
    > File Name: 7.pthread_cancel.c
    > Author: Ykk
    > Mail: 3393579535@qq.com 
    > Created Time: 2023年05月10日 星期三 20时21分48秒
 ************************************************************************/

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#include<unistd.h>
#include<pthread.h>

void *fun(void *arg)
{
	int i = 0;
	for(i = 0;i < 5;i++)
	{
		printf("pthread do working...%d\n",i);
		sleep(1);
	}
	pthread_exit(NULL);
}
int main()
{
	int ret = -1;
	pthread_t tid = -1;

	//创键一个线程
	ret = pthread_create(&tid,NULL,fun,NULL);
	if(0 != ret)
	{
		printf("pthread_create failed...\n");
		return 1;
	}
	printf("main thread...tid:%lu\n",pthread_self());

	//设置线程分离
	ret = pthread_detach(tid);
	if(0 != ret)
	{
		printf("pthread_detach failed...\n");
		return 1;
	}
	
	sleep(3);
	printf("主线程睡眠3秒 取消子线程>...\n");
	pthread_cancel(tid);//只能取消同一个进程中的线程，不能跨进程取消

	return 0;
}
